Thomas Knneth Friedrich-Neuper-Str. 2b 90552 R”thenbach Zun„chst: Wenn ich von der OLGA-Lib spreche so ist nur die Pure C - Library inkl. Headerdatei gemeint; der Manager und das dem Konzept zugrunde liegende Protokoll entstammen der Feder von Thomas Much @ KA2 OLGA-Lib ist Freeware und darf ohne weitere Kosten in eigenen Programmen eingesetzt werden; die kostenlose Weitergabe ist fr Privatpersonen erlaubt und erwnscht; das Packen auf CD-ROMS oder šbernehmen in PD-Serien bedarf meiner ausdrcklichen schriftlichen Genehmigung Ausdrcklich gestattet ist es Thomas Much das Archiv OLGA_LIB in die Gesamt- distribution "OLGA" aufzunehmen Fr Sch„den welcher Art auch immer die durch die direkte oder indirekte Nutzung dieses Paketes entstehen bernehme ich keinerlei haftung; die ver- wendung geschieht auf eigene Gefahr ----------- Der zweifellos wichtigste Bestandteil dieses Pakets ist die Headerdatei OLGA.H die die fr die Verwendung des Protokolls n”tigen Konstanten bzw. Makros bereitstellt. Darberhinaus sind im Laufe der Zeit ntzliche Funktionen entstanden, die die Handhabung des Protokolls vereinfachen oder (IMHO) andere clevere Dinge tun... :-) Die mit olga_... beginnenden Funktionen erlauben nur eine etwas verein- fachte Handhabung des OLGA-Managers. Wichtig: die diesen Funktionen ber- gebenen Zeiger mssen von anderen Prozessen aus erreichbar sein; des- halb gibt es die Funktion global_strcpy, die einen String inkl. 0-Byte in einen von der Funktion allozierten globalen Speicherbereich kopiert. Dieser Speicher kann sp„ter mit Gemdos-Mfree freigegeben werden. olga_init sucht den Manager im System; wurde er nicht gefunden wird ggf. die Environmentvariable OLGAMANAGER ausgewertet. Sie sollte den kom- pletten Pfadnamen des Managers enthalten. In diesem Fall veranlažt die Lib die Shell dieses Programm zu starten (via AV_STARTPROG). Eine andere M”glichkeit ist es, OLGAMANAGER den Namen einer bereits laufenden Anwendung zuzuweisen. Dies w„re dann die richtige Wahl wenn eine Shell das OLGA-Proto- koll untersttzt. Die Funktion get_avserver_id wertet die Environmentvariable AVSERVER aus und versucht den angegebenen Prozež mit appl_find zu orten. Wird AVSERVER nicht gefunden wird nach "GEMINI " gesucht. Die Funktion xappl_find() ist nichts weiter als ein appl_find, wobei aber auf die L„nge des Namens geachtet und der String in Grožbuchstaben gewandelt wird; wird ein kompletter Pfadname bergeben wird der Dateiname herausgefiltert und auf ihn ein appl_find gemacht. run_appl() veranlažt einen AV-Server, das angegebene Programm zu starten und ihm die Kommandozeile zu bergeben. run_appl() sorgt selbst fr das Allozieren des globalen Speichers fr die beiden Strings, der beim n„chsten Aufruf wieder freigegeben wird. Unabh„ngig davon wie die Kommandozeile aufgebaut ist muž sie mit einem 0-Byte abschliežen. Vor dem Aufruf wird getestet ob die Anwendung schon im Speicher war. Ist dem so, wird die Kommandozeile via VA_START bergeben. Dies klappt auch, wenn kein AV-Server im System installiert wurde. Wurde kein AV-Server gefunden startet die Lib die Anwendung selbst, hierzu wird nach dem MagX-Cookie gesucht und ggf. die entsprechende Aufrufvariante verwendet. Wird kein passender Cookie gefunden verwendet die Lib die MTOS-Konvention, wenn die AES-Version >= 0x400 ist. ACHTUNG: eine andere Lib muž eine Funktion GetCookie() mit der blichen Syntax bereitstellen. sc_changed macht ab AES 4 einen Broadcast mit den der Nachricht SC_CHANGED entsprechenden Parametern Die Funktion olga_start erwartet unterschiedliche Parameter: M”gliche Aufrufformen sind - abh„ngig von olga_ols - : OLS_TYPE: void olga_start(char *cmdlin,int olga_ols,int xacc_typ) OLS_EXTENSION: void olga_start(char *cmdlin,int olga_ols,long extension) OLS_NAME: void olga_start(char *cmdlin,int olga_ols,char *filename) Wichtig: olga_init liefert keine Prozež ID. Diese soll dem Message-Buffer entnommen werden wenn die Meldung OLGA_INIT eintrifft. Die Lib verwendet einige Funktionen aus den Standard-Libraries, die deshalb mit eingebunden werden mssen. In einem anderen Modul muž _GemParBlk und MiNTInstalled (ein Integer der einen Wert ungleich 0 hat wenn MiNT l„uft) definiert werden. Ich hoffe diese Mini-Lib ist ein paar Leuten von Nutzen. Vorschl„ge, Meinungen und Kritiken bitte an: Thomas Knneth @ N (MausNet) oder tskuenne@linguistik.uni-erlangen.de